

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Alejandros y Nelea
 */
public class Partida {

    public int casillasDescubiertas;
    public int[] estadisticaDescubiertas = new int[1];

    /**
     * Método que comprueba si la posición introducida esta destapada, si no lo
     * esta la destapa
     *
     * @param tableroConsulta - Tablero donde esta la información referente al
     * tablero
     * @param tableroPartida - Tablero sobre el que el usuario va destapando las
     * casillas
     * @param fila - Fila introducida por el usuario
     * @param columna - Columna introducida por el usuario
     * @return char - Devuelve el carácter que ocupa la posición introducida por
     * el usuario
     */
    public char comprobarPosicion(char[][] tableroConsulta,
            char[][] tableroPartida, int fila, int columna) {
        if ((tableroPartida[fila][columna]) != '*') {
            System.out.println("Esta posición ya esta destapada\n");
            casillasDescubiertas--;
        }
        tableroPartida[fila][columna] = tableroConsulta[fila][columna];
        return tableroPartida[fila][columna];
    }

    /**
     * El método se encarga de destapar todas las casillas de alrededor de la
     * posición introducida por el usuario, y si la posición destapada es un 0
     * se llama a sí mismo
     *
     * @param tableroConsulta - Tablero donde esta la información referente al
     * tablero
     * @param tableroPartida - Tablero sobre el que el usuario va destapando las
     * casillas
     * @param fila - Fila introducida por el usuario
     * @param columna - Columna introducida por el usuario
     */
    public void destaparAlrededor(char tableroConsulta[][],
            char[][] tableroPartida, int fila, int columna) {

        if ((fila == 0) && (columna == 0)) {
            if (tableroPartida[fila + 1][columna] == '*') {
                tableroPartida[fila + 1][columna] =
                        tableroConsulta[fila + 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna);
                }
            }

            if (tableroPartida[fila + 1][columna + 1] == '*') {
                tableroPartida[fila + 1][columna + 1] =
                        tableroConsulta[fila + 1][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna + 1);
                }
            }

            if (tableroPartida[fila][columna + 1] == '*') {
                tableroPartida[fila][columna + 1] =
                        tableroConsulta[fila][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna + 1);
                }
            }

        } else if ((fila == 0) && ((columna > 0) && (columna
                < tableroPartida.length - 1))) {
            if (tableroPartida[fila + 1][columna - 1] == '*') {
                tableroPartida[fila + 1][columna - 1] =
                        tableroConsulta[fila + 1][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna - 1);
                }
            }

            if (tableroPartida[fila][columna - 1] == '*') {
                tableroPartida[fila][columna - 1] =
                        tableroConsulta[fila][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna - 1);
                }
            }

            if (tableroPartida[fila + 1][columna] == '*') {
                tableroPartida[fila + 1][columna] =
                        tableroConsulta[fila + 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna);
                }
            }

            if (tableroPartida[fila + 1][columna + 1] == '*') {
                tableroPartida[fila + 1][columna + 1] =
                        tableroConsulta[fila + 1][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna + 1);
                }
            }

            if (tableroPartida[fila][columna + 1] == '*') {
                tableroPartida[fila][columna + 1] =
                        tableroConsulta[fila][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna + 1);
                }
            }

        } else if ((fila == 0) && (columna == tableroPartida.length - 1)) {
            if (tableroPartida[fila + 1][columna] == '*') {
                tableroPartida[fila + 1][columna] =
                        tableroConsulta[fila + 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna);
                }
            }

            if (tableroPartida[fila + 1][columna - 1] == '*') {
                tableroPartida[fila + 1][columna - 1] =
                        tableroConsulta[fila + 1][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna - 1);
                }
            }

            if (tableroPartida[fila][columna - 1] == '*') {
                tableroPartida[fila][columna - 1] =
                        tableroConsulta[fila][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna - 1);
                }
            }

        } else if (((fila > 0) && (fila < tableroPartida.length - 1))
                && (columna == 0)) {
            if (tableroPartida[fila - 1][columna] == '*') {
                tableroPartida[fila - 1][columna] =
                        tableroConsulta[fila - 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna);
                }
            }

            if (tableroPartida[fila - 1][columna + 1] == '*') {
                tableroPartida[fila - 1][columna + 1] =
                        tableroConsulta[fila - 1][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna + 1);
                }
            }

            if (tableroPartida[fila][columna + 1] == '*') {
                tableroPartida[fila][columna + 1] =
                        tableroConsulta[fila][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna + 1);
                }
            }

            if (tableroPartida[fila + 1][columna + 1] == '*') {
                tableroPartida[fila + 1][columna + 1] =
                        tableroConsulta[fila + 1][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna + 1);
                }
            }

            if (tableroPartida[fila + 1][columna] == '*') {
                tableroPartida[fila + 1][columna] =
                        tableroConsulta[fila + 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna);
                }
            }

        } else if (((fila > 0) && (fila < tableroPartida.length - 1))
                && (columna == tableroPartida.length - 1)) {
            if (tableroPartida[fila - 1][columna] == '*') {
                tableroPartida[fila - 1][columna] =
                        tableroConsulta[fila - 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna);
                }
            }

            if (tableroPartida[fila - 1][columna - 1] == '*') {
                tableroPartida[fila - 1][columna - 1] =
                        tableroConsulta[fila - 1][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna - 1);
                }
            }

            if (tableroPartida[fila][columna - 1] == '*') {
                tableroPartida[fila][columna - 1] =
                        tableroConsulta[fila][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna - 1);
                }
            }

            if (tableroPartida[fila + 1][columna - 1] == '*') {
                tableroPartida[fila + 1][columna - 1] =
                        tableroConsulta[fila + 1][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna - 1);
                }
            }

            if (tableroPartida[fila + 1][columna] == '*') {
                tableroPartida[fila + 1][columna] =
                        tableroConsulta[fila + 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna);
                }
            }

        } else if ((fila == tableroPartida.length - 1) && (columna == 0)) {
            if (tableroPartida[fila - 1][columna] == '*') {
                tableroPartida[fila - 1][columna] =
                        tableroConsulta[fila - 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna);
                }
            }

            if (tableroPartida[fila - 1][columna + 1] == '*') {
                tableroPartida[fila - 1][columna + 1] =
                        tableroConsulta[fila - 1][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna + 1);
                }
            }

            if (tableroPartida[fila][columna + 1] == '*') {
                tableroPartida[fila][columna + 1] =
                        tableroConsulta[fila][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna + 1);
                }
            }

        } else if ((fila == tableroPartida.length - 1) && ((columna > 0)
                && (columna < tableroPartida.length - 1))) {
            if (tableroPartida[fila][columna - 1] == '*') {
                tableroPartida[fila][columna - 1] =
                        tableroConsulta[fila][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna - 1);
                }
            }

            if (tableroPartida[fila - 1][columna - 1] == '*') {
                tableroPartida[fila - 1][columna - 1] =
                        tableroConsulta[fila - 1][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna - 1);
                }
            }

            if (tableroPartida[fila - 1][columna] == '*') {
                tableroPartida[fila - 1][columna] =
                        tableroConsulta[fila - 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna);
                }
            }

            if (tableroPartida[fila - 1][columna + 1] == '*') {
                tableroPartida[fila - 1][columna + 1] =
                        tableroConsulta[fila - 1][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna + 1);
                }
            }

            if (tableroPartida[fila][columna + 1] == '*') {
                tableroPartida[fila][columna + 1] =
                        tableroConsulta[fila][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna + 1);
                }
            }

        } else if ((fila == tableroPartida.length - 1)
                && (columna == tableroPartida.length - 1)) {
            if (tableroPartida[fila][columna - 1] == '*') {
                tableroPartida[fila][columna - 1] =
                        tableroConsulta[fila][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna - 1);
                }
            }

            if (tableroPartida[fila - 1][columna - 1] == '*') {
                tableroPartida[fila - 1][columna - 1] =
                        tableroConsulta[fila - 1][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna - 1);
                }
            }

            if (tableroPartida[fila - 1][columna] == '*') {
                tableroPartida[fila - 1][columna] =
                        tableroConsulta[fila - 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna);
                }
            }

        } else {
            if (tableroPartida[fila - 1][columna - 1] == '*') {
                tableroPartida[fila - 1][columna - 1] =
                        tableroConsulta[fila - 1][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna - 1);
                }
            }

            if (tableroPartida[fila - 1][columna] == '*') {
                tableroPartida[fila - 1][columna] =
                        tableroConsulta[fila - 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna);
                }
            }

            if (tableroPartida[fila - 1][columna + 1] == '*') {
                tableroPartida[fila - 1][columna + 1] =
                        tableroConsulta[fila - 1][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila - 1][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila - 1,
                            columna + 1);
                }
            }

            if (tableroPartida[fila][columna - 1] == '*') {
                tableroPartida[fila][columna - 1] =
                        tableroConsulta[fila][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna - 1);
                }
            }

            if (tableroPartida[fila][columna + 1] == '*') {
                tableroPartida[fila][columna + 1] =
                        tableroConsulta[fila][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila,
                            columna + 1);
                }
            }

            if (tableroPartida[fila + 1][columna - 1] == '*') {
                tableroPartida[fila + 1][columna - 1] =
                        tableroConsulta[fila + 1][columna - 1];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna - 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna - 1);
                }
            }

            if (tableroPartida[fila + 1][columna] == '*') {
                tableroPartida[fila + 1][columna] =
                        tableroConsulta[fila + 1][columna];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna);
                }
            }

            if (tableroPartida[fila + 1][columna + 1] == '*') {
                tableroPartida[fila + 1][columna + 1] =
                        tableroConsulta[fila + 1][columna + 1];
                casillasDescubiertas++;

                if (tableroPartida[fila + 1][columna + 1] == '0') {
                    destaparAlrededor(tableroConsulta, tableroPartida, fila + 1,
                            columna + 1);
                }
            }

        }
    }
}
